package com.mingyuan.library.domain.common.enums;

/**
 * 常用异常编码枚举
 * @author yangzk
 * @version 1.0.0
 * @date 2022.11.06 11:52
 */
public enum CommonExceptionCodeEnum implements ErrorEnumBase {
    /**
     * 成功
     */
    SUCCESS("1000000", "OK"),
    /**
     * 通用未定义异常，需要提供相关 title
     */
    DEFAULT_ERROR("0099", ""),
    /**
     * 严重级别未定义异常
     */
    UNKNOWN("009999", "抱歉，系统不太给力，请稍后再试"),
    /**
     * 传入参数为空
     */
    BLANK_PARAMETER("000101", "传入参数为空"),
    /**
     * 传入参数有误
     */
    INVALID_PARAMETER("000102", "传入参数有误"),
    /**
     * 数据不存在
     */
    NOT_FOUND("000103", "通用不存在"),
    /**
     * 数据库基类异常
     */
    DB_BASE_FAILED("000104", "数据库基类异常"),
    /**
     * 调用后端服务超时异常
     */
    TIME_OUT("000105", "调用后端服务超时异常"),
    /**
     * 业务逻辑异常
     */
    BIZ_ERROR("000106", "业务逻辑异常"),
    /**
     * 远程服务接口调用异常
     */
    REMOTE_SERVICE_FAILED("000201", "远程服务接口调用异常"),
    /**
     * 调用远程服务返回空或失败
     */
    REMOTE_SERVICE_RETURN_FAILED("000202", "调用远程服务返回空或失败"),
    /**
     * 线程异常
     */
    THREAD_INTERRUPTED("000203", "线程中断InterruptedException"),
    /**
     * 未登录或登录已过期，请重新登录。
     */
    LOGIN_EXPIRED("000303", "未登录或登录已过期，请重新登录。");

    private final String errCode;
    private final String errMessage;

    CommonExceptionCodeEnum(String errCode, String errMessage) {
        this.errCode = errCode;
        this.errMessage = errMessage;
    }

    @Override
    public String getErrCode() {
        return this.errCode;
    }

    @Override
    public String getErrMessage() {
        return this.errMessage;
    }
}
